首页/ 学科题库/ vite/ CDN 部署与资源分发
vite 实战教程

CDN 部署与资源分发

2026-05-23 约 7 分钟 juanwangdev

CDN 部署与资源分发

生产环境使用 CDN 分发静态资源,提升全球用户访问速度。

CDN 部署架构

JavaScript
用户请求 → CDN 边缘节点 → 缓存命中? → 返回资源
                          ↓ 未命中
                        源站获取 → 缓存 → 返回

配置 CDN 基础路径

HTML
export default defineConfig({
  base: 'https://cdn.example.com/assets/'
})

构建后资源引用:

JavaScript
<script src="https://cdn.example.com/assets/index-abc123.js"></script>
<link href="https://cdn.example.com/assets/index-def456.css">

资源哈希命名

Bash
export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        // JS 哈希命名
        entryFileNames: 'js/[name]-[hash].js',
        chunkFileNames: 'js/[name]-[hash].js',
        // CSS 哈希命名
        assetFileNames: (assetInfo) => {
          if (assetInfo.name.endsWith('.css')) {
            return 'css/[name]-[hash][extname]'
          }
          return 'assets/[name]-[hash][extname]'
        }
      }
    }
  }
})

注意:哈希命名确保缓存正确,内容变化文件名变化。

上传 CDN

JavaScript
# 构建产物
npm run build

# 上传 dist/assets 到 CDN
aws s3 sync dist/assets s3://cdn-bucket/assets/

# 或使用其他 CDN 服务

CDN 缓存策略

资源类型缓存时间
HTML短缓存或不缓存
JS/CSS长期缓存
图片/字体长期缓存

HTML 处理

YAML
// HTML 不放 CDN,放源站
// base 只影响静态资源
export default defineConfig({
  base: 'https://cdn.example.com/assets/',
  build: {
    // HTML 输出到源站目录
    outDir: 'dist-server'
  }
})

CDN 配置示例

JavaScript
# CDN 配置
cache:
  js: max-age=31536000  # 1年
  css: max-age=31536000
  images: max-age=31536000
  html: max-age=0       # 不缓存

多 CDN 配置

text
// 使用多个 CDN 域名
const cdnDomains = [
  'https://cdn1.example.com',
  'https://cdn2.example.com'
]

export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        // 可按资源类型分 CDN
        assetFileNames: (assetInfo) => {
          const cdn = assetInfo.name.endsWith('.css')
            ? cdnDomains[0]
            : cdnDomains[1]
          return `${cdn}/[name]-[hash][extname]`
        }
      }
    }
  }
})

要点总结

  • base 配置 CDN 基础路径
  • 哈希命名确保缓存正确
  • HTML 放源站,静态资源放 CDN
  • JS/CSS 长期缓存,HTML 短缓存
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 共享依赖版本管理 下一篇 → 构建产物版本管理